package com.dream.technology.service;

import com.dream.technology.db.entity.RcCustomerTag;
import com.dream.technology.db.entity.RcFlow;
import com.dream.technology.db.entity.RcFlowItem;
import com.dream.technology.db.entity.RcFlowQuery;
import com.dream.technology.db.entity.vo.ParentFlowVo;
import org.apache.ibatis.annotations.Param;

import java.util.List;

public interface RcFlowParentService {

	int countByExample(RcFlowQuery example);

    int deleteByExample(RcFlowQuery example);

    int deleteByPrimaryKey(Long id);

    int insert(RcFlow record);

    int insertSelective(RcFlow record);

    List<RcFlow> selectByExample(RcFlowQuery example);

    RcFlow selectByPrimaryKey(Long id);

    int updateByExampleSelective(@Param("record") RcFlow record, @Param("example") RcFlowQuery example);

    int updateByExample(@Param("record") RcFlow record, @Param("example") RcFlowQuery example);

    int updateByPrimaryKeySelective(RcFlow record);

    int updateByPrimaryKey(RcFlow record);

    /**
     * 创建总流程
     * @author:wangxm
     * @Date:2019年1月25日 下午3:52:42
     * @param flowName
     * @param flowDetail
     * @param enabled
     * @return
     */
	int add(String flowName, String flowDetail, Boolean enabled);

	/**
	 * 配置风控总流程
	 * @author:wangxm
	 * @Date:2019年1月25日 下午6:54:30
	 * @param rcFlowStr
	 */
	void updateByJsonStr(ParentFlowVo rcFlowStr);

	/**
	 * 规则表达式生成文本描述
	 * @author:wangxm
	 * @Date:2019年1月28日 上午10:53:50
	 * @param flowExp
	 * @return
	 */
	String checkFlow(ParentFlowVo flowExp);

	/**
	 * 复制风控总流程
	 * @author:wangxm
	 * @Date:2019年1月28日 上午10:46:12
	 * @param id
	 * @param flowName
	 * @param flowDetail
	 * @param enabled
	 */
	void copy(Long id, String flowName, String flowDetail, Boolean enabled);

	/**
	 *  获取某个总流程下的所有用户标签
	 * @param flowId
	 * @return
	 */
	 List<RcCustomerTag>  getVoTag(Long flowId);

	/**
	 *  根据子流程 ，用户标签id查找流程
	 * @param items
	 * @param tagId
	 * @return
	 */
	RcFlow getChildFlow(List<RcFlowItem> items, Long tagId);

}
